﻿// nlomann4ReadMatrix.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
//

#include <iostream>
#include <string>
#include <vector>
#include <map>

#include <nlohmann/json.hpp>

#include <Common/JsonHelper.h>

using json = nlohmann::json;

int main() try {
    std::string config_json_path = "/home/hrl/Desktop/MyLearning/MyCppLearning/nlohmann-learning/json4KeyOrder/config.json";
    std::string order_json_path, inorder_json_path;

    json config_json, order_json;
    nlohmann::ordered_json inorder_json;
    JsonHelper::load(config_json_path, config_json);
    config_json["order_json_path"].get_to(order_json_path);
    config_json["inorder_json_path"].get_to(inorder_json_path);

    std::cout << "config is: " << config_json << std::endl;
    std::cout << std::endl;

    JsonHelper::load(order_json_path, order_json);
    JsonHelper::load(inorder_json_path, inorder_json);

    std::cout << "order is: " << order_json << std::endl;
    std::cout << std::endl;
    std::cout << "order is: " << order_json.dump(4) << std::endl;
    std::cout << std::endl;
    
    // std::map<std::string, int> order_map;
    // order_json.get_to(order_map);
    // for (auto i : order_map) {
    //     std::cout << i.first << " " << i.second << std::endl;
    // }
    // std::cout << std::endl;
    JsonHelper::save(order_json_path, order_json);

    std::cout << "inorder is: " << inorder_json << std::endl;
    std::cout << std::endl;
    std::cout << "inorder is: " << inorder_json.dump(4) << std::endl;
    std::cout << std::endl;

    JsonHelper::save(inorder_json_path, inorder_json);

    return 0;    
}
catch (json::exception& e)
{
    std::cout << e.what() << '\n';
}



// 运行程序: Ctrl + F5 或调试 >“开始执行(不调试)”菜单
// 调试程序: F5 或调试 >“开始调试”菜单

// 入门使用技巧: 
//   1. 使用解决方案资源管理器窗口添加/管理文件
//   2. 使用团队资源管理器窗口连接到源代码管理
//   3. 使用输出窗口查看生成输出和其他消息
//   4. 使用错误列表窗口查看错误
//   5. 转到“项目”>“添加新项”以创建新的代码文件，或转到“项目”>“添加现有项”以将现有代码文件添加到项目
//   6. 将来，若要再次打开此项目，请转到“文件”>“打开”>“项目”并选择 .sln 文件
